package cn.yanceysong.gitstats.config;

import lombok.Data;
import lombok.Builder;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;
import java.util.List;
import java.util.ArrayList;

/**
 * Git统计配置
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class GitStatsConfig {
    
    /**
     * 统计开始时间
     */
    private LocalDateTime since;
    
    /**
     * 统计结束时间
     */
    private LocalDateTime until;
    
    /**
     * 是否跳过合并提交
     */
    @Builder.Default
    private boolean skipMergeCommits = true;
    
    /**
     * 排除的文件路径（包含这些路径的文件将被忽略）
     */
    @Builder.Default
    private List<String> excludedPaths = new ArrayList<>();
    
    /**
     * 排除的文件扩展名
     */
    @Builder.Default
    private List<String> excludedExtensions = new ArrayList<>();
    
    /**
     * 是否包含空提交
     */
    @Builder.Default
    private boolean includeEmptyCommits = false;
    
    /**
     * 是否按文件类型统计
     */
    @Builder.Default
    private boolean enableFileTypeStats = true;
    
    /**
     * 是否按日期统计
     */
    @Builder.Default
    private boolean enableDailyStats = true;
    
    /**
     * 添加排除路径
     */
    public void addExcludedPath(String path) {
        if (excludedPaths == null) {
            excludedPaths = new ArrayList<>();
        }
        excludedPaths.add(path);
    }
    
    /**
     * 添加排除扩展名
     */
    public void addExcludedExtension(String extension) {
        if (excludedExtensions == null) {
            excludedExtensions = new ArrayList<>();
        }
        excludedExtensions.add(extension);
    }
}
